/*
 * File:   FriedmannEvolution.hpp
 * Author: gian
 *
 * Created on December 10, 2012, 4:39 PM
 */

#ifndef FRIEDMANNEVOLUTION_HPP
#define FRIEDMANNEVOLUTION_HPP

#include <stdio.h>

class FriedmannEvolution {
  public:
    FriedmannEvolution(double OmegaRadiation,
                       double OmegaMatter,
                       double a0,
                       double H0);

    FriedmannEvolution(const FriedmannEvolution & orig);

    virtual ~FriedmannEvolution();

    void step(double deta);

    double get_OmegaRadiation();

    double get_OmegaMatter();

    double get_OmegaVacuum();

    double get_scale_parameter();

    double get_H();

    double get_eta();

    void set_eta(double eta);

    void load(FILE* stream);
    void save(FILE* stream);
    
  private:
    double friedmann_f(double a);

    double ma0;
    double mH0;
    double mOmegaRadiation;
    double mOmegaMatter;
    double mOmegaVacuum;
    double ma_actual;
    double ma_previous;
    double mEta_actual;
    double mEta_previous;
};
#endif /* FRIEDMANNEVOLUTION_HPP */


//~ Formatted by Jindent --- http://www.jindent.com
